home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / comp0_89.lha / Feel / Boot / CBoot / bitvectors.em < prev    next >
Text File  |  1993-06-30  |  992b  |  48 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: bitvectors.em
  4. ;; Date: Tue Jun 29 22:57:10 1993
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;
  9.  
  10. (defmodule bitvectors
  11.   (telos1
  12.    macros0
  13.    defs
  14.    init
  15.    
  16.    )
  17.   ()
  18.   
  19.   (defclass <bit-vector> (<sequence>)
  20.     ((self accessor bits))
  21.     direct-initargs (size fill)
  22.     )
  23.  
  24.   (defmethod initialize ((x <bit-vector>) args)
  25.     (let ((new (call-next-method))
  26.       (size (scan-args 'size args required-argument)))
  27.       ((setter bits) new (primitive-make-bit-vector size))
  28.       (when (= fill 1)
  29.     (fill new 0 (- size 1)))
  30.       new))
  31.   
  32.   (defmethod element ((bv <bit-vector>) s)
  33.     (primitive-bit-vector-ref (bits bv) s))
  34.  
  35.   (defmethod (setter element) ((bv <bit-vector>) s v)
  36.     ((setter primitive-bit-vector-ref) (bits bv) s v))
  37.   
  38.   (defmethod size ((bv <bit-vector>))
  39.     (bit-vector-length (bits bv)))
  40.  
  41.   (defmethod current-key ((c <bit-vector>) (s <fixint>)) s)
  42.   
  43.   (defmethod clone ((x <bit-vector>))
  44.     (make <bit-vector> 'size x))
  45.  
  46.   ;; end module
  47.   )
  48.